---
title: "Architecture"
sidebarTitle: "Architecture"
---

VM Agent is mainly built on the same components as Odigos' k8s distribution. See [the architectural overview](/architecture) for it to get an overview of what those components are and how they interact.

However, since the environment is very different from k8s, there are significant differences as well. This document tries to list the most important ones.

VM Agent constists of following components:

- SystemD manager
- Instrumentor
- eBPF directors
- Configuration manager

## SystemD manager

SystemD manager watches changes to service files, service runtime statuses and provides necessary information for Instrumentor.

## Instrumentor

Instrumentor updates the service files when required and automatically instruments configured services.

## eBPF directors

The directors are each responsible for a set language. These are the components that do the last mile of instrumentation injecting tracing and exporting telemetry to the local collector.

## Configuration manager

Configuration managers watch configuration changes and reconfigure instrumentations or the collector whenever necessary. The configuration for VM Agent is split between two files:

- `/etc/odigos-vmagent/service.yaml`: Odigos Pro token configuration;
- `/etc/odigos-vmagent/agent.yaml`: Agent configuration specifying the collector pipeline(processors and destinations), and instrumentation configuration - SystemD services to instrument and to ignore.
